package edu.ynu.se.xiecheng.achitectureclass.digitalagriculture.entity;

import edu.ynu.se.xiecheng.achitectureclass.common.entity.BaseEntity;
import lombok.Data;

import javax.persistence.*;

/**
 * 温室实体类
 * 设计原则体现：
 * 1. 领域驱动设计(DDD) - 实体类反映具体业务领域模型
 * 2. 单一职责原则 - 类只负责温室相关的数据结构
 * 3. 继承复用原则 - 继承BaseEntity获取通用属性
 */
@Data   // 使用Lombok简化getter/setter
@Entity // JPA注解，体现ORM映射
@Table(name = "greenhouse")
public class GreenhouseEntity extends BaseEntity {

    /**
     * 实体属性
     * 设计原则体现：
     * 1. 封装原则 - 属性私有化，通过getter/setter访问
     * 2. 持久化映射 - 使用JPA注解进行ORM映射
     */
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    protected Long id;

    @Column
    protected String name;

    @Column
    private String boxNo;

    @Column
    private String address;

    @Column
    private Integer area;

    /**
     * 特殊字段映射
     * 设计原则体现：
     * 1. 配置即代码 - 通过注解处理特殊命名
     * 2. 命名规范 - 避免与数据库关键字冲突
     */
    @Column(name = "`desc`")  // 处理MySQL关键字
    private String desc;
}
